System, method and computer readable medium for encoding curves

ABSTRACT

A computer readable medium storing thereon a program for encoding the conformation of a given curve is provided. The encoding program includes: a point selection module for selecting representative points on a given curve; an arrangement module for putting an elemental structure block which consists of a trunk and branches; a branch selection module for selecting a branch from each of the blocks arranged above; an adjustment module for adjusting spacial orientation of the elemental structure blocks arranged above, just after selection of the most appropriate branch of a block (current block) and before selection of the most appropriate branch of the block assigned to the next representative point (next block); and a code generator module for generating data which describe the conformation of the curve, using the code of the selected branches of the elemental structure blocks assigned to the representative points of the curve.

This patent application claims priority from a Japanese patentapplication No. 2006-184977 filed on Jul. 4, 2006, the contents of whichare incorporated herein by reference.

BACKGROUND

1. Technical Field

The present invention relates to a system, a method and a computerreadable medium for encoding a curve. In particular, this inventionrelates to a computer readable medium storing encoding programs whichencode the conformations, i.e., spacial patterns, of curves.

2. Related Art

The function of a protein is determined by the three-dimensionalstructure of the protein. Thus, once three-dimensional structures arerepresented in a simple way, one could compare structural similarity ofproteins using the data, instead of the complicated three-dimensionalstructures.

As a representation method of the shapes of three-dimensional objects,there are two known ways: one approximates the shape of an object usinga combination of predetermined primitive objects (such as cuboids,spheres, and cylinders), the other uses polygon-meshes to approximatethe surface of an object. As an example of approximation by primitiveobjects, WO02/101598 and WO03/040968 propose an encoding method of theconformations of curves in (N−1)-dimensional Euclidean space, wherecurves are approximated by a sequence of N-face polyhedrons and theconformation of a curve is described as a binary sequence (N denotes anynatural number greater than 1).

As for mathematical representations of the backbone conformations ofbiopolymer molecules such as proteins, there are three known methods: C.Branden and J. Tooze, “Introduction to Protein Structure,” GarlandPublishing Inc, New York (USA), 1998, pp. 9-10 explains the Ramachandranplot method, where the two backbone dihedral angles (the angle ofrotation around the N—Ca bond and the angle around the C′—Ca bond fromthe same Ca atom) are plotted against each other in a two-dimensionaldiagram to characterize protein structures such as alpha-helices andbeta-sheets. S. Rackovsky, H. A. Scheranga, “Differential Geometry andPolymer Conformation. 1.,” Macromolecules, 1978, 1168-1174 proposed adifferential geometrical method, where protein backbones areapproximated by a broken line to quantify the structural similarity ofdifferent proteins. P. Rogen, B. Fain, “Automatic classification ofprotein structure by using Gauss integrals,” Proc. Natl. Acad. Sci.,2003, 100, 119-124 proposed a topological method, where proteinstructures are described using 30 geometrical parameters for the purposeof classification.

Finally, WO03/040968 proposed an encoding method of three-dimensionalbiopolymer molecule structures (such as protein structures), where abiopolymer is approximated by a sequence of tetrahedrons and itsconformation is represented by a binary sequence. Since the method makesit possible to describe the three-dimensional structures of biopolymersas one-dimensional number sequences, one could compute structuralsimilarity of different polymers simply by comparing the correspondingnumber sequences.

SUMMARY

When one encodes the backbone conformations of biopolymer molecules suchas proteins, it is desirable to encode local structures precisely. Forexample, it is desirable for a system, which implements a backboneconformation encoding method, to generate codes which detect smalldifferences of the backbone conformations of different proteinsprecisely.

Therefore, it is an object of an aspect of the present invention toprovide a system, a method and a storage medium, which are capable ofovercoming the above drawbacks accompanying the related art. The aboveand other objects can be achieved by combinations described in theindependent claims. The dependent claims define further advantageous andexemplary combinations of the present invention.

Thus, one aspect of the present invention provides a computer readablestorage medium. The storage medium includes a program for encoding theconformation of a given curve. The encoding program includes a pointselection module for selecting representative points on a given curve;an arrangement module for putting an elemental structure block whichconsists of a trunk and branches, where each branch is connected to thesame end point of the trunk in a predetermined configuration andassigned a different code, on each of the representative points in sucha way that the connection point of the trunk and branches of the blockcoincides with the position of the corresponding representative point; abranch selection module for selecting a branch from each of the blocksarranged above, successively along the curve starting from the firstrepresentative point to the last representative point, which representsthe gradient of the curve at the corresponding representative point mostappropriately; an adjustment module for adjusting spacial orientation ofthe elemental structure blocks arranged above, just after selection ofthe most appropriate branch of a block (current block) and beforeselection of the most appropriate branch of the block assigned to thenext representative point (next block), in such a way that the directionand rotational orientation of the trunk of the next block coincide withthe predetermined direction and rotational orientation assigned to theselected branch of the current block; and a code generator module forgenerating data which describe the conformation of the curve, using thecode of the selected branches of the elemental structure blocks assignedto the representative points of the curve.

The summary clause does not necessarily describe all necessary featuresof the embodiments of the present invention. The present invention mayalso be a sub-combination of the features described above. The above andother features and advantages of the present invention will become moreapparent from the following description of the embodiments taken inconjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows the organization of an encoding system 10 embodying theinvention;

FIGS. 2(A)-2(C) show an example of the elemental structure block 30 usedin the embodiment;

FIG. 3 shows the encoding procedure performed by the encoding system 10used in the embodiment;

FIGS. 4(A)-4(D) show an example of the procedures S11, S12, . . . , S14in FIG. 3;

FIGS. 5(A)-5(F) show an example of the procedures S16, S17, . . . , S19in FIG. 3;

FIG. 6 shows an example of encoding result of a curve 50, whererepresentative points are selected discretely;

FIGS. 7(A)-7(E) show an example of an elemental structure block 30, anarrangement, broken lines 56, and an output binary sequence thereof,where the direction of the direction vector 42 assigned to a branch 34is not equal to the direction of the trunk 32 nor to the direction ofthe branch 34 itself;

FIGS. 8(A)-8(E) show an example of an elemental structure block 30, anarrangement, broken lines 56 and an output binary sequence thereof,where the direction of the direction vector 42 assigned to a branch 34is equal to the direction of the branch 34 itself;

FIGS. 9(A)-9(E) show an example of an elemental structure block 30, anarrangement, broken lines 56, and an output binary sequence thereof,whose branches 34 are assigned a direction vector 42 whose direction isequal to the direction of the trunk 32;

FIGS. 10(A)-10(D) show another example of an elemental structure block30 which is used to encode the conformation of space curves;

FIGS. 11(A) and 11(B) show an example of adjustment of spacialorientation of the block 30 shown in FIGS. 10(A)-10(D);

FIGS. 12(A) and 12(B) show an example of the elemental structure block30 shown in FIG. 2, a triangle tile 80, and FIG. 12(C) shows an exampleof an arrangement of the triangle tiles 30 shown in FIGS. 12(A) and12(B) on a target curve 50;

FIGS. 13(A) and 13(B) show an example of the elemental structure block30 shown in FIG. 10, a tetrahedron block 90, and FIG. 13(C) shows anexample of an arrangement of the tetrahedron blocks 30 shown in FIGS.13(A) and 13(B) on a target curve 50;

FIG. 14 shows an example of the encoding system 10 embodying a variantembodiment of the invention; and

FIG. 15 shows a hardware organization of a computer system 1900 which isused in the embodiment.

DESCRIPTION OF EXEMPLARY EMBODIMENTS

The invention will now be described based on preferred embodiments,which are not intended to limit the scope of the invention, but toexemplify the invention. All of the features and the combinationsthereof described in the embodiments are not necessarily essential tothe invention.

FIG. 1 shows the organization of an encoding system 10 embodying theinvention. The encoding system 10 is composed of an input module 12, apoint selection module 14, a gradient vector generator module 16, anarrangement module 18, a branch selection module 20, an adjustmentmodule 22, and a code generator module 24.

The encoding system 10 encodes the conformation of a given curve into asequence of codes, such as a sequence of binary numbers. That is, theencoding system 10 is capable of generating a code sequence whichrepresents the conformation of a curve or variation of the localstructures of the curve. As a result, one could compute structuralsimilarity of different curves by comparing the corresponding codesequences generated by the system 10. For example, one could use theencoding system 10 to encode the conformations of backbone structures ofbiopolymer molecules such as proteins for the purpose of classificationor data retrieval.

The input module 12 receives the data of a target curve. For example,the module 12 receives two- or three-dimensional coordinates of pointson the curve. The point selection module 14 selects representativepoints on the curve received by the input module 12. For example, thepoint selection module 14 may select ordered points on the curvearranged from one end to the other end. Then, the point selection module14 may store data which specify the order of point representative pointsas well as data which specify the position of the point.

The gradient vector generator module 16 assigns a gradient vector toeach of the representative points selected by the point selection module14 above. For example, the gradient vector generator module 16 mayassign the direction from the current point to the next point, asgradient vector to the current point. Or the gradient vector generatormodule 16 may assign a vector which is parallel to the gradient vectorof the curve at the current point and its direction goes from thecurrent point to the next point, as gradient vector to the currentpoint. And the gradient vector generator module 16 may compute datawhich specify the gradient vectors assigned to the representative pointsand store the data, coupled with another data which specify thecorresponding representative point.

The arrangement module 18 puts an elemental structure block 30 whichconsists of a trunk 32 and branches 34, where each branch is connectedto the same end point of the trunk 32 in a predetermined configurationand assigned a different code, on each of the representative points insuch a way that the connection point of the trunk 32 and branches 34 ofa block 30 coincides with the position of the correspondingrepresentative point. For example, the arrangement module 18 may computethe length, position, direction, and rotational orientation of the trunk32 as data which specify the spacial orientation of the trunk 12 withina block 30. Then, the arrangement module 18 may store the data, coupledwith another data which specify the corresponding representative point.And the arrangement module 18 may compute the length and relativearrangement (position and direction with respect to the trunk 32) ofeach branch 32, the direction (direction vector) assigned to each branch34 which may be different from the direction of itself, thepredetermined rotational orientation of each branch 32, and the codeassigned to each branch 34 as data which specify the branches 34 of ablock 30. Then, the arrangement module 18 may store the data, coupledwith another data which specify the corresponding representative point.

Finally, the arrangement module 18 puts an elemental structure block 30on each of the representative points in such a way that the position ofa block 30 and the corresponding representative point coincide. And thearrangement module 18 may store data which specify the spacialorientation of the arranged blocks 30, coupled with another data whichspecify the position of the corresponding representative point.

The branch selection module 20 selects representative points one by onealong the curve starting from the first representative point to the lastrepresentative point. For each representative point, the branchselection module 20 selects a branch, from the branches of the elementalstructure block 30 assigned to the point, which represents the gradientof the curve at the point most appropriately. For example, the branchselection module 20 may select the branch 34, of a block 30, which isassigned a direction vector whose direction is closer to the directionof the gradient vector of the curve at the point than that of the otherbranches' direction vectors. The branch selection module 20 may comparethe data which specify the directions of the branches 34 of an elementalstructure block 30 with the data which specify the direction of thegradient vector of the curve at the corresponding point, to choose thebranch 34 whose direction is closer the direction of the gradient vectorof the curve at the point than that of the other branches. Then, thebranch selection module 20 stores the code assigned to the selectedbranch 34 as the code associated with the corresponding representativepoint.

The adjustment module 22 adjusts direction and rotational orientation ofthe elemental structure blocks 30 arranged above, just after selectionof the most appropriate branch 34 of a block 30 (current block) by thebranch selection module 20 and before selection of the most appropriatebranch 34 of the block 30 assigned to the next representative point(next block) by the branch selection module 20, in such a way that thedirection and rotational orientation of the trunk 32 of the next block30 coincide with the predetermined direction (direction vector) androtational orientation of the selected branch 34 of the current block30. For example, the adjustment module 22 may firstly modify the datawhich specify the spacial orientation of a block 30 (current block) insuch a way that the predetermined direction assigned to the selectedbranch 34 of the block 30 coincides with the gradient vector of thecurve at the corresponding representative point. Secondly the adjustmentmodule 22 may modify the data which specify the spacial orientation ofthe next block 30 in such a way that the direction and rotationalorientation of the trunk 32 of the next block 30 coincide with thepredetermined direction (direction vector) and rotational orientationassigned to the selected branch 34 of the current block 30.

The code generator module 24 generates data which describe theconformation of the curve, using the code of the selected branches 34 ofthe elemental structure blocks 30 arranged on the curve. For example,the code generator module 20 may arrange the codes of the selectedbranches 34 in the order that the corresponding representative pointsoccur on the curve and output the obtained sequence of codes, as datawhich describe the conformation of the curve. Using the encoding system10 described above, one could describe the local structure of theconformation of a curve precisely with data of a simple structure. Andthe encoding system 10 could generate codes of curves which detectdifferences of conformations precisely.

FIG. 2(A) shows an example of the elemental structure block 30 embodyingthe embodiment. FIG. 2(B) shows an example of the block 30, where thefirst branch 34-1 is selected. And FIG. 2(C) shows an example of theblock 30, where the second branch 34-2 is selected.

The branch selection module 20 may use the block 30 shown in FIG. 2 toencode the conformation of curves in two-dimensional Euclidean space(i.e., plane curves). The elemental structure block 30 embodying theembodiment is two-dimensional and has a trunk 32 and two branches 34(the first one 34-1 and the second one 34-2) as shown in FIG. 2. Thetrunk 32 is a line segment of predefined length. The two branches 34 arealso line segments of predefined lengths. (For example, the length ofthe branches may be the same as the length of the trunk 32.) The twobranches 34 have one of their end points coincided with an end point 36of the trunk 32. The first branch 34-1 assumes a predetermined positionwith respect to the trunk 32 and the second branch 34-2 assumes anotherpredetermined position with respect to the trunk 32, where the angleformed by first branch 34-1 and the trunk 32 may be equal to the angleformed by the second branch 34-2 and the trunk 32. For example, both ofthe angles may be 120 degrees.

Moreover, each of the branches 34 of the block 30 embodying theembodiment is assigned a direction vector 42; the first direction vector42-1 to the first branch 34-1 and the second direction vector 42-2 tothe second branch 34-2. A block 30 is assigned the direction specifiedby the first direction vector 42-1 when the first branch 34-1 isselected. And a block 30 is assigned the direction specified by thesecond direction vector 42-2 when the second branch 34-2 is selected.For example, the first direction vector 42-1 may be arranged as shown inFIG. 2(B), forming a predetermined angle with the trunk 32. And thesecond direction vector 42-2 may be arranged differently as shown inFIG. 2( c), forming a predetermined angle with the trunk 32. (The angleformed by the vector 42-1 and the trunk 32 may be equal to the angleformed by the vector 42-2 and the trunk 32.)

Each of the branches 34 of the block 30 embodying the embodiment is alsoassigned a code; code 0 to one branch and code 1 to the other branch.And the encoding system 10 could generate a binary sequence of 0 and 1which describes the conformation of a given plane curve, using theelemental structure blocks 30.

The block 30 may be specified by a set of data which includes thelength, position, and direction of the trunk 32, the length of thebranches 34, relative position and direction 32 of the branches 34 withrespect to the trunk 32, relative direction of direction vectors 42 withrespect to the trunk 32, and the codes assigned to the branches 34. Theencoding system 10 may encode a plane curve 50, using the data whichspecify the block 30.

FIG. 3 shows the encoding procedure performed by the encoding system 10for the embodiment of this invention. FIG. 4(A) shows an example of acurve, curve 50, received in input step S1. FIG. 4(B) shows therepresentative points 52 of the curve 50 selected in step S12. FIG. 4(C)shows the gradient vectors 54 generated at the representative points 52of the curve 50 in step S13. FIG. 4(D) shows the elemental structureblocks 30 arranged on the representative points 52 of the curve 50 instep S14. FIG. 5(A) shows an example of an elemental structure block 30and the gradient vectors 54 assigned to the corresponding representativepoint 52. FIG. 5(B) shows the block 30, where one of the branches 34 hasbeen selected in step S16. FIG. 5(C) shows an example of adjustment of adirection vector 42 in step 17. FIG. 5(D) shows the block 30 after theadjustment in step S17. FIG. 5(E) shows an example of arrangement of ablock 30 and the next block 30 after adjustment in step S18. FIG. 5(F)shows the arrangement of a block 30 and the next block 30, where one ofthe branches 34 of the next block 30 has been selected in step S16.

First of all, the input module 12 receives a curve 50 to be encoded(S11, FIG. (A)). And the point selection module 14 selectsrepresentative points 52 on the curve 50 (S12, FIG. (B)). Then, thegradient vector generator module 16 computes a gradient vector 54 foreach of the representative points 52 selected above (S13, FIG. (C)). Andthe arrangement module 18 put an elemental structure block 30 on each ofthe selected points 52(S14, FIG. 4(D)).

Next, the branch selection module 20 and the adjustment module 22 adjustspacial orientation of the blocks 30 assigned to the points 52 one byone, in the order the corresponding points occur on the curve 50. Inparticular, the two modules 20 and 22 perform the following procedures,from S16 to S19.

The branch selection module 20 selects a branch 34, from the branches 34of a block 30, which is closer to the gradient vector 54 of the block 30than the others (S16, FIGS. 5(A) and (B)). For example, in the case ofFIGS. 5(A) and (B), the branch selection module 20 selects the branch 34which is assigned a direction vector 54 and code 1 because the branch 34is closer to the gradient vector 54 than the other branch 34 which isassigned another direction vector 54 and code 0. And the branchselection module 20 stores the code assigned to the selected branch 34.For example, in the case of FIGS. 5(A) and (B), the branch selectionmodule 20 stores code 1.

Next, the adjustment module 22 rotates the block 30 around theconnection point of the trunk 32 and the branches 34 until the directionvector 42 assigned to the branch 34 selected in step S16 and thegradient vector 54 of the corresponding representative point 52 computedin step S13 become parallel to each other (S17, FIGS. 5(C) and (D)). Andthe adjustment module 22 aligns the next block 30, i.e., a blockassigned to the next representative point, with the current block 30 insuch a way that the direction of the trunk 32 of the next block 30 andthe direction of the branch 34 of the current block 30 selected in step16 coincide (S18, FIG. 5(E)). The adjustment module 22 may put the block30 assigned to the first representative point in a predetermined way.

Then, the adjustment module 22 assigns a code to each of the branches 34of the next block 30 (S19), where the code-to-branch mapping of the nextblock 30 is different from that of the current block 30. That is, theadjustment module 22 assigns code 1 to a branch 34 of the next block 30if the same branch 34 of the current block 30 is assigned code 0. Andthe adjustment module 22 assigns code 0 to a branch 34 of the next block30 if the same branch 34 of the current block 30 is assigned code 1. Theadjustment module 22 may assign codes to the branches 34 of the block 30assigned to the first representative point 52 in a predetermined way.

After step S19, the branch selection module 20 selects the block 30assigned to the next point 54 and the encoding process returns to thebranch selection step S16 (S20, S15, and FIG. 5(F)). After processingthe block 30 assigned to the last point 52 (S20), the code generatormodule 24 generates data which describes the conformation of the targetcurve 50, using the codes assigned to the branches 34 selected by thebranch selection module 20 (S20). For example, the code generator module24 may generate a sequence of code obtained by arranging the codesassigned to the selected branches of the blocks 30 in the order that thecorresponding points 52 occur on the curve 50. That is, the codegenerator module 24 may generate a binary sequence of 0 and 1 whichdescribe the conformation of a target plane curve 50.

Using the encoding system 10 described above, one could generate datawhich describe the conformation of a given curve precisely. In theabove, the encoding system 10 performs the loop of steps S16, S17, . . ., and S20 after selection of all representative points 52 (S12),generation of a gradient vector 54 for each of all the selected points52 (S13), and arrangement of an elemental structure block on all theselected points 52 (S14). Instead, the encoding system 10 may performselection of a next representative point 52, generation of a gradientvector 54 of the selected point 52, and placing of a block 30 on theselected point 52 after selection of a branch step (S16).

FIG. 6 shows an example of encoding result of a curve 50, whererepresentative points are selected discretely. The point selectionmodule 14 selects representative points on the curve 50 in apredetermined way. For example, the point selection module 14 may selectpoints which are arranged at predetermined intervals from an end pointto the other end on the curve 50, where the intervals may be differentfrom each other as in the case of the example shown in FIG. 6. Thelonger the intervals become, the smaller the code generated by theencoding system 10 becomes. And one could compare the conformation ofcurves more roughly using a smaller code, since the smaller codedescribes the less precise conformation of curves.

FIGS. 7(A) and (B) show an example of an elemental structure block 30,where the direction of the direction vector 42 assigned to a branch 34is not equal to the direction of the trunk 32 nor to the direction ofthe branch 34 itself. FIG. 7 (C) shows an example of an arrangement ofthe blocks 30 shown in FIGS. 7(A) and (B) on a target curve 50. FIG.7(D) shows the broken lines 56 formed by the branches selected at theblocks 30 of FIG. 7(C) during the encoding process. FIG. 7(E) shows theoutput binary sequence associated with the arrangement of the blocks 30of FIG. 7(C).

In the above, the encoding system 10 could also generate data whichdescribe the more precise conformation of a curve 50 using shorterintervals. For example, the length of the branches 32 may be equal tothe length of the trunk 32 and the intervals between successive points52 may be equal to or shorter than the length of the trunk 32. Then, theencoding system 10 could generate broken lines 56, which approximate theconformation of the curve 50, by connecting the selected branches 34 ofthe blocks 30 arranged on the curve 50 in the order that thecorresponding points 52 occur on the curve 50. The encoding system 10may generates data which describe the broken lines 56, using the datawhich describe the length, position, and orientation of the selectedbranches 34 of the blocks 30 arranged on the curve.

FIGS. 8(A) and (B) show an example of an elemental structure block 30,where the direction of the direction vector 42 assigned to a branch 34is equal to the direction of the branch 34 itself. FIG. 8(C) shows anexample of an arrangement of the blocks 30 shown in FIGS. 8(A) and (B)on a target curve 50. FIG. 8(D) shows the broken lines 56 formed by thebranches selected at the blocks 30 of FIG. 8(C) during the encodingprocess. FIG. 8(E) shows the output binary sequence associated with thearrangement of the blocks 30 of FIG. 8(C).

The encoding system 10 may uses an elemental structure block 30 whosebranches 34 are assigned a direction vector 42 whose direction is equalto the direction of the branch 34 itself. Then, the direction of theselected branch 34 becomes parallel to the direction of the gradientvector of the curve 50 at the corresponding point 50, after theadjustment step S17. In general, using a block 30 whose branches 34 areassigned a direction vector 42 whose direction is closer to thedirection of the branch 34 itself, the encoding system 10 could generatedata which describe more precise variation of the gradient of the curve50: the closer, the more precise. That is, by bringing the direction ofthe direction vector 42 of the branches 34 of a block 30 closer to thedirection of the branch 34 itself, one could adjust the sensitivity ofthe output of the encoding system 10 to variation of the gradient of atarget curve 50.

FIGS. 9(A) and (B) show an example of an elemental structure block 30whose branches 34 are assigned a direction vector 42 whose direction isequal to the direction of the trunk 32. FIG. 9(C) shows an example of anarrangement of the blocks 30 shown in FIGS. 9(A) and (B) on a targetcurve 50. FIG. 9(D) shows the broken lines 56 formed by the branchesselected at the blocks 30 of FIG. 9(C) during the encoding process. FIG.9(E) shows the output binary sequence associated with the arrangement ofthe blocks 30 of FIG. 9(C).

The encoding system 10 may uses an elemental structure block 30 whosebranches 34 are assigned a direction vector 42 whose direction is equalto the direction of the trunk 32. Then, the direction of the selectedbranch 34 becomes farther from the direction of the gradient vector ofthe curve 50 at the corresponding point 50, after the adjustment stepS17. In general, using a block 30 whose branches 34 are assigned adirection vector 42 whose direction is closer the direction of the trunk34, the encoding system 10 could generate data which describe variationof the gradient of a curve 50 less precisely: the closer, the lessprecise. That is, by bringing the direction of the direction vector 42of the branches 34 of a block 30 closer to the direction of the trunk34, one could adjust the sensitivity of the output of the encodingsystem 10 to variation of the gradient of a target curve 50.

FIGS. 10(A) and (B) show another example of an elemental structure block30 which is used to encode the conformation of curves inthree-dimensional Euclidean space (i.e., space curves). FIG. 10(C) showsthe block 30, where the first branch 34-1 is selected (in step S16).FIG. 10(D) shows the block 30, where the second branch 34-2 is selected(in step S16).

The elemental structure block 30 embodying the second embodiment of theinvention is a three-dimensional object with a trunk 32 and two branches34; the first one 34-1 and the second one 34-2. The trunk 32 is acylinder shaped object of predetermined length. And the trunk 32 has atiny projection 72 which indicates the rotational orientation of thetrunk 32.

The two branches 34 are also cylinder shaped objects of predeterminedlength. For example, they may have the same shape as the trunk 32. Thebranches 34 are joined to the same end 36 of the trunk 32 via an endpoint. The first branch 34-1 and the trunk 32 form a predeterminedangle. And the second branch 34-2 and the trunk 32 also form the samepredetermined angle. But the two branches 34 are placed in differentpositions from each other. For example, the predetermined angle formedby the first branch 34-1 and the trunk 32 may be 120 degrees. Thepredetermined angle formed by the second branch 34-2 and the trunk 32may be also 120 degrees. And the first branch 34-1 and the second branch34-2 may form an angle of 90 degrees. Moreover, each of the two branches34 has a tiny projection 74 which indicates the rotational orientationof itself, the first projection 74-1 for the first branch 34-1 and thesecond projection 74-2 for the second branch 34-2.

The elemental structure block 30 embodying the second embodiment is alsoassigned direction vectors 42 for each of the branches 34; the firstdirection vector 42-1 is assigned to the first branch 34-1 and thesecond direction vector 42-2 is assigned to the second branch 34-2. Thefirst direction vector 42-1 goes through the center point 36 of theblock 30 and forms predetermined angles with the trunk 32 and the firstbranch 34-1, as shown in FIG. 10(C). The second direction vector 42-2also goes through the center point 36 of the block 30 and formspredetermined angles with the trunk 32 and the second branch 34-2, asshown in FIG. 10(D). The first direction vector 42-1 specifies thedirection of the block 30 when the first branch 34-1 is selected in stepS16. And the second direction 42-2 vector specifies the direction of theblock 30 when the second branch 34-2 is selected in step S16.

Furthermore the two branches 34 of the block 30 are assigned differentcodes; one is assigned code 0 and the other is assigned code 1. Then,the encoding system 10 could generate a binary sequence of 0 and 1 whichdescribes the conformation of a given space curve, using the block 30described above.

The elemental structure block 30 embodying the second embodiment may bespecified by a set of data which include the length, position,direction, and rotational orientation (specified by the projection 72)of the trunk 32, the length of the branches 34, the relative positionand direction 32, and rotational orientation (specified by theprojection 74) of the branches 34 with respect to the trunk 32, thespacial orientation of direction vectors 42 with respect to the trunk 32and the branches 34, and the codes assigned to the branches 34. Theencoding system 10 may encode a space curve, using the data whichspecify the block 30 embodying the second embodiment.

FIGS. 11(A) and (B) show an example of adjustment of spacial orientationof the block 30 shown in FIG. 10. The adjustment module 22 adjustsspacial orientation of blocks 30, just after selection of the mostappropriate branch 34 of a block 30 assigned to the currentrepresentative point 54 (current block) and before selection of the mostappropriate branch of the block 30 assigned to the next representativepoint 52 (next block), in such a way that the direction and rotationalorientation of the trunk 32 of the next block 30 coincide with thepredetermined direction (direction vector) and rotational orientation ofthe selected branch 34 of the current block 30.

In the case of the block 30 of FIG. 10, the adjustment module 22 firstlyarranges the current and the next blocks 30 in such a way that thedirection of the trunk 32 of the next block 30 and the direction of theselected branch 34 of the current block 30 coincide. Then, theadjustment module 22 adjusts the rotational orientation of the nextblock 30 in such a way that the rotational orientation of the trunk 32of the next block 30 specified by the projection 72 and the rotationalorientation of the selected branch 34 of the current block 30 specifiedby the projection 74 coincide.

As described above, the adjustment module 22 could specify spacialorientation of the block 30 placed on the next representative pointuniquely. And the encoding system 10 could generate a binary sequence of0 and 1 which describes the three-dimensional conformation of a givenspace curve, using the block 30 shown in FIG. 10.

FIGS. 12(A) and (B) show an example of the elemental structure block 30shown in FIG. 2; a triangle tile 80. FIG. 12(C) shows an example of anarrangement of the triangle tiles 30 shown in FIGS. 12(A) and (B) on atarget curve 50. The encoding system 10 may encode the two-dimensionalconformation of a plane curve 50, using the triangle tiles 30 aselemental structure block 30.

The triangle tile 30 is an equilateral triangle composed of a base 82and two sides 84, the first one 84-1 and the second one 84-2. The base82 is perpendicular to the trunk 32 of the block 30 shown in FIG. 2. Thefirst side 84-1 is perpendicular to the first branch 34-1 of the block30 shown in FIG. 2. And the second side 84-2 is perpendicular to thesecond branch 34-2 of the block 30 shown in FIG. 2. Moreover, the center80 of the tile 80 may coincide with the connection point of the trunk 32and the branches 34 of the block 30 shown in FIG. 2.

The arrangement module 18 arranges the triangle tiles 80 on therepresentative points of the given curve 50. And the branch selectionmodule 20 selects the side 84 whose direction is closer to the gradientvector 54 of the curve 50 at the corresponding point than that of theother side 84. Then, the code assigned to the branch 34 whichcorresponds to the selected side 84 is stored. In this way, the encodingsystem 10 could generate a binary sequence of 0 and 1 which describesthe two-dimensional conformation of a given plane curve. The encodingsystem 10 may also generate broken lines which approximate the givencurve by arranging the selected sides 84 in the order they are selected.

FIGS. 13(A) and (B) show an example of the elemental structure block 30shown in FIG. 10; a tetrahedron block 90. FIG. 13(C) shows an example ofan arrangement of the tetrahedron blocks 30 shown in FIGS. 13(A) and (B)on a target curve 50. The encoding system 10 may encode thethree-dimensional conformation of a space curve 50, using thetetrahedron blocks 30 as elemental structure block 30. The tetrahedronblock 90 consists of four faces; a base 92, two side faces 94 (the firstside face 94-1 and the second side face 94-2), and a top 96. All of thefour faces have the same shape; an isosceles triangle whose ratio of thelength of the three sides is given by 2: square root of 3: square rootof 3.

The base 92 is perpendicular to the trunk 32 of the block 30. The firstface 94-1 is perpendicular to the first branch 34-1 of the block 30. Thesecond face 94-2 is perpendicular to the second branch 34-2 of the block30. The first side face 94-1 and the base 92 share one of the twoshorter sides of them. The first side face 94-1 and the second side face94-2 share the longer side of them. The second side face 94-2 and thebase 92 share one of the two shorter sides of them. The second side face94-2 and the first side face 94-1 share the longer side of them.

Moreover, the tetrahedron block 90 has two direction edges 98, the firstdirection edge 98-1 and the second direction edge 98-2. The firstdirection edge 98-1 corresponds to the direction vector of the firstbranch 34-1 of the block 30 shown in FIG. 10. And the edge 98-1 is theedge of the block 90 which is not included in the base 92 nor the firstside face 94-1. The second direction edge 98-2 corresponds to thedirection vector of the second branch 34-2 of the block 30 shown in FIG.10. And the edge 98-2 is the edge of the block 90 which is not includedin the base 92 nor the second side face 94-2.

The arrangement module 18 arranges the tetrahedron blocks 90 on therepresentative points of the given curve 50. And the branch selectionmodule 20 selects the direction edge 98 whose direction is closer to thegradient vector 54 of the curve 50 at the corresponding point than thatof the other edge 98. Then, the code assigned to the branch 34 whichcorresponds to the selected edge 98 is stored. In this way, the encodingsystem 10 could generate a binary sequence of 0 and 1 which describesthe three-dimensional conformation of a given space curve. The encodingsystem 10 may also generate a sequence of tetrahedron blocks 90 whichapproximates the given curve by arranging the blocks 90 in the orderthey are selected.

FIG. 14 shows an example of the encoding system 10 embodying analternative embodiment of the invention. The encoding system 10 has aseparator module 202, an encoder module 204, a local code generatormodule 206, and a combining module 208. The separator module 202generates a set of fragments of a target curve, where neighboringfragments overlap and the curve is fully covered by the set offragments. For example, the separator module 202 may generates datawhich specify the two- or three-dimensional coordinates of the points onfragments of the target curve, where neighboring fragments overlap andthe curve is fully covered by the set of fragments.

The encoder module 204 has the same organization and function as thoseof the encoding system 10 shown in FIG. 1. And the encoder module 204encodes each of the fragments generated by the separator module 202 togenerate data, such as a binary sequence, which describes theconformation of the fragment. The encoder module 204 encodes a fragmentby arranging elemental structure blocks 30 on the fragment in such a waythat the selected branch 34 of a block 30 and the trunk 32 of the nextblock 30 overlaps. Moreover, the encoder module 204 may generate morethan one set of data, which describe the conformation of the givenfragment, for each fragment. For example, the encoder module 204 maygenerate different data which describe the conformation of the samefragment using a different first representative point and/or differentspacial orientations of the blocks 30.

The local code generator module 206 generates a code of a given fragmentwhich describe the conformation of the fragment (local code), using thedata obtained above. For example, the local code generator module 206may output all the set of data it generates for the fragment, as a codeof the fragment.

The combining module 208 generates a code which describes theconformation of the whole target curve, using the codes of the fragmentsobtained above. For example, the combining module 208 may output a setof local codes coupled with the position of the corresponding fragment,as a code of the curve 50.

Spacial orientation of a particular block 30 depends on that of thepreceding block 30, when the encoder module 204 encodes a fragment byarranging the blocks 30 on the fragment in such a way that the selectedbranch 34 of a block 30 and the trunk 32 of the next block 30 overlaps.Therefore, in this case, one could not compute partial similarity of twocurves, using the code generated by the encoding system 10 because codeof a fragment is not determined uniquely. But you could use codesgenerated by the encoding system 10 embodying the variant embodimentdescribed above to compute partial similarity of curves because theencoding system 10 generates a variety of codes for each of thefragments which describe the conformation of the same fragment.

FIG. 15 shows a hardware organization of a computer system 1900 whichembodies the embodiments described above. The computer system 1900 isequipped with a CPU part composed of a CPU 2000, a RAM 2020, a graphiccontroller 2075, and a display 2080, all of which are connected to eachother by a host controller 2082. The computer system 1900 is alsoequipped with an interface part composed of a network interface 2030, ahard disk drive 2040, and a CD-ROM drive 2060, all of which areconnected to the host controller 2082 by an I/O controller 2084. Thecomputer system 1900 is also equipped with a legacy I/O part composed ofa ROM 2010, a FD (flexible desk) drive 2050, and an I/O chip 2070, allof which are connected to the I/O controller 2084.

The host controller 2082 is connected to the RAM 2020, the CPU 2000which transfers data to/from the RAM 2020 with high-throughput, and agraphic controller 2075. The CPU 2000 controls the system 1900,executing programs stored in the ROM 2010 and the RAM 2020. The graphiccontroller 2075 loads image data and put it in a frame buffer which isallocated by the CPU 2000 in the RAM 2020 to display the image on thedisplay 2080. Or the graphic controller 2075 may provides a frame bufferfor the CPU 2000 and others instead of the CPU 2000.

The I/O controller 2084 is connected to the host controller 2082, thenetwork interface 2030, the hard disk drive 2040, and CD-ROM drive 2060.The network interface 2030 communicates with other devices over network.The hard desk drive 2040 stores programs and data which are executed orused by the CPU 2000. The CD-ROM drive 2060 loads programs and data froma CD-ROM 2095 and transfer them to the hard disk drive 2040 via the RAM2020.

The I/O controller 2084 is also connected to the ROM 2010, the FD drive2050, and the I/O chip 2070, all of which transfer data with relativelylow throughput. The ROM 2010 stores a boot program, which is executed bythe CPU when the computer system 1900 is started, and otherhardware-dependant programs. The FD drive 2050 load programs and datafrom a FD disk 2090 and transfer them to the hard disk drive 2040 viathe RAM 2020. The I/O chip 2070 is connected to a various kind ofdevices via the FD drive 2050, a parallel port, a serial port, akeyboard port, a mouse port, or others.

Users provide programs stored in the hard disk drive 2040, usingremovable storage media, such as a FD disk 2090, a CD-ROM 2095, and anIC card. And the CPU 2000 loads the programs from the hard disk drive2040 and executes them.

The program executed by the computer system 1900 to implement theencoding system 10 includes an input routine, a point selection routine,a gradient vector generator routine, an arrangement routine, a branchselection routine, an adjustment routine, and a code generator routine.And the computer system execute these routines and others to implementthe input module 12, a point selection module 14, a gradient vectorgenerator module 16, an arrangement module 18, a branch selection module20, an adjustment module 22, and a code generator module 24 of theencoding system 10.

The program executed by the computer system 1900 to implement thevariant embodiment of the encoding system 10 described above has aseparator routine, a encoder routine, local code generator routine, anda combining routine. And the computer system executes these routines andothers to implement the separator module 202, the encoder module 204,the local code generator module 206, and the combining module 208 of thevariant embodiment.

The programs and modules described above may be store in externalstorage media. The external storage media includes not only FD disks2090 and CD-ROMs 2095 but also optical storage media such as DVDs andCDs, optical-magnet storage media such as MOs, tapes, IC cards,semiconductor memory such as IC cards. Or the program may be provided tothe computer system 1900 via network.

As clearly indicated by the above description, an embodiment of thepresent invention can easily achieve a test apparatus and an electronicdevice enabling low-speed and high-speed devices to be tested with asingle test apparatus. Also, an embodiment of the present invention caneasily achieve a test apparatus and an electronic device enabling adevice having both low-speed and high-speed sections to be tested.

1. A non-transitory computer readable medium storing thereon a programfor encoding the conformation of a given curve, the encoding programcomprising: a point selection module for selecting representative pointson a given curve; an arrangement module for putting an elementalstructure block which consists of a trunk and branches, where eachbranch is connected to the same end point of the trunk in apredetermined configuration and assigned a different code, on each ofthe representative points in such a way that the connection point of thetrunk and branches of the block coincides with the position of thecorresponding representative point; a branch selection module forselecting a branch from each of the blocks arranged above, successivelyalong the curve starting from the first representative point to the lastrepresentative point, which represents the gradient of the curve at thecorresponding representative point most appropriately; an adjustmentmodule for adjusting spacial orientation of the elemental structureblocks arranged above, just after selection of the most appropriatebranch of a block (current block) and before selection of the mostappropriate branch of the block assigned to the next representativepoint (next block), in such a way that the direction and rotationalorientation of the trunk of the next block coincide with thepredetermined direction and rotational orientation assigned to theselected branch of the current block; and a code generator module forgenerating data which describe the conformation of the curve, using thecode of the selected branches of the elemental structure blocks assignedto the representative points of the curve.
 2. The computer readablemedium as set forth in claim 1, wherein each branch of an elementalstructural block is assigned a direction which is different from thedirection of itself.
 3. The computer readable medium as set forth inclaim 2, wherein an elemental structure block has two branches, one ofwhich is assigned code 0 and the other is assigned code 1, and the codegenerator module generates a binary sequence that is obtained byarranging the codes of the selected branches in the order that thecorresponding representative points occur on the curve.
 4. The computerreadable medium as set forth in claim 3, wherein an elemental structureblock has two branches whose length is the same as the length of thetrunk, where the angle formed by the two branches is 90 degrees and theangles formed by the trunk and each of the branches are 120 degrees. 5.A system for encoding a curve comprising: a point selection module forselecting a plurality of representative points disposed along the curve;an arrangement module for arranging a plurality of elemental structureblocks at the representative points, each of the elemental structureblocks corresponding to the respective one of the representative points,each of the elemental structure blocks comprising: a trunk, and aplurality of branches, each of which being attached to an end point ofthe trunk at a predetermined angular configuration and having adifferent code assigned, the end point of the trunk generallyoverlapping with each of the representative points; a branch selectionmodule for selecting a branch closest to the gradient vector atrespective one of the representative points from the plurality ofbranches included in the current elemental structure block correspondingto the respective one of the representative points, the branch selectionbeing performed sequentially from one representative point to anotheralong the curve; an adjustment module for adjusting a direction and arotational angle of a next elemental structure block, a direction androtational angle of the trunk arranged at the next representative pointgenerally coinciding with a designated direction and rotational anglepredetermined for the selected branch, the adjustment being performedafter the branch selection module selecting the branch arranged at thecurrent representative point and before the branch selection moduleselecting the branch arranged at the next representative point; and acode generator module for generating data representing the curve byusing the assigned codes of the selected branches.
 6. The system as setforth in claim 5, wherein each direction of the branches is differentfrom the designated direction for the selected branch.
 7. The system asset forth in claim 5, wherein each elemental structure block comprisesat least one branch to which 0 is assigned as code and at least onebranch to which 1 is assigned as code.
 8. The system as set forth inclaim 7, wherein the code generator module outputs data obtained bycombining the codes assigned to the branches sequentially selected foreach elemental structure block along the curve.
 9. The system as setforth in claim 5, wherein the trunk and two of the branches of eachelemental structure block have substantially the same length, andwherein the trunk has approximately 120 degrees with respect to each ofthe two branches, while one of the two branches has approximately 90degrees with respect to the other branch.
 10. The system as set forth inclaim 5, wherein the curve is provided as data represented in atwo-dimensional or a three-dimensional coordinate system.
 11. The systemas set forth in claim 5, wherein the gradient vector comprises a vectorbeing disposed in parallel with a tangent line at the firstrepresentative point along the curve, the vector representing adirection from the current representative point to the nextrepresentative point.
 12. The system as set forth in claim 5, whereinthe plurality of representative points are continuously selected alongthe curve.
 13. The system as set forth in claim 5, wherein the pluralityof representative points are discretely selected along the curve. 14.The system as set forth in claim 5, wherein each of the elementalstructure blocks comprises a trunk and two branches.
 15. The system asset forth in claim 14, wherein the elemental structure block is formedin a triangle tile.
 16. The system as set forth in claim 14, wherein theelemental structure block is formed in a tetrahedron block.
 17. A methodfor encoding a curve comprising: preparing the curve as a target to beencoded; selecting a plurality of representative points disposed alongthe curve; calculating a plurality of gradient vectors, each of whichcorresponding to the respective one of the representative points;providing a plurality of elemental structure blocks, each of whichcomprising a trunk and a plurality of branches, each branch beingattached to an end point of the trunk at a predetermined angularconfiguration, each of the branch having a direction vector; arranging afirst elemental structure block, which corresponding to a firstrepresentative point, the end point for the first elemental structureblock generally overlapping with the first representative point;selecting a branch closest to a first gradient vector corresponding tothe first representative point among the branches included in the firstelemental structure block; adjusting a direction and a rotational angleof the selected branch, the direction vector of which generallycoinciding with the first gradient vector; adjusting a direction and arotational angle of a branch of a second elemental structure block to beselected, the direction of the trunk included in the second elementalstructure block generally coinciding with the direction of the selectedbranch included in the first elemental structure block; assigning codesto the branches included in the second elemental structure block, thebranches having a different code from each other; repeating from thefirst elemental structure block arranging step to the code assigningstep with respect to a next representative point disposed along thecurve; and generating data representing the curve by using the assignedcodes of the selected branches, wherein the method is performed using aprocessor or computer.
 18. The method as set forth in claim 17, whereinthe gradient vector comprises a vector being disposed in parallel with atangent line at the first representative point along the curve, thevector representing a direction from the first representative point tothe second representative point.
 19. The method as set forth in claim17, wherein the generated data comprises a binary sequence.
 20. Themethod as set forth in claim 17, wherein the plurality of representativepoints are discretely selected along the curve.